<template>
  <div>
    <!-- <a-input addon-before="标题" v-model="title"/> -->
    <a-input addon-before="标题" v-model="title">
      <a-select slot="addonAfter" v-model="type" style="width: 95px">
        <a-select-option value="前端">前端技术</a-select-option>
        <a-select-option value="后端">后端技术</a-select-option>
        <!-- <a-select-option value="FSR 4.0">FSR 4.0</a-select-option> -->
        <a-select-option value="疑问">疑问</a-select-option>
        <a-select-option value="其他技术">其他技术</a-select-option>
      </a-select>
    </a-input>
    <quill-editor
      id="quillEditor"
      class="editor"
      ref="quill"
      v-model="content"
      :options="editorOption"
      @blur="onEditorBlur($event)"
      @focus="onEditorFocus($event)"
      @ready="onEditorReady($event)"
      @change="onEditorChange($event)"
      style="height: 350px; margin-bottom: 5%; background: #fff"
    ></quill-editor>
    <input type="file" @change="change" id="upload" style="display:none;" />
  </div>
</template>
<script>
import { quillEditor, Quill } from "vue-quill-editor";
import { container, ImageExtend } from "quill-image-extend-module";
import ImageResize from "quill-image-resize-module";
import { uploadImg } from "@/apis/common";
Quill.register("modules/ImageExtend", ImageExtend);
// use resize module
Quill.register("modules/ImageResize", ImageResize);
export default {
  data() {
    return {
      content: null,
      title: "",
      data: {},
      type: "发布板块",
      editorOption: {
        modules: {
          ImageResize: {
            displayStyles: {
              backgroundColor: "black",
              border: "none",
              color: "white",
            },
            modules: ["Resize", "DisplaySize", "Toolbar"],
          },
          ImageExtend: {
            loading: true,
            name: "file",
            hedaers: (xhr) => {
              xhr.setRequestHeader("token", this.token);
            },
            action: "pyCommon/img",
            response: (res) => {
              return res.data;
            },
          },
          toolbar: {
            container: [
              ["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
              ["blockquote", "code-block"], // 引用  代码块
              [{ header: 1 }, { header: 2 }], // 1、2 级标题
              [{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
              [{ script: "sub" }, { script: "super" }], // 上标/下标
              [{ indent: "-1" }, { indent: "+1" }], // 缩进
              // [{'direction': 'rtl'}],                         // 文本方向
              [{ size: ["small", false, "large", "huge"] }], // 字体大小
              [{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
              [{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
              [{ font: [] }], // 字体种类
              [{ align: [] }], // 对齐方式
              ["clean"], // 清除文本格式
              ["link", "image"], // 链接、图片、视频
            ],
            handlers: {
              image: function() {
                $("#upload").click();
              },
            },
          }, //工具菜单栏配置
        },
        placeholder: "可以在此处写下的你想法或问题", //提示
        readyOnly: false, //是否只读
        theme: "snow", //主题 snow/bubble
        syntax: false, //语法检测
      },
    };
  },
  methods: {
    // 失去焦点
    onEditorBlur(editor) {},
    // 获得焦点
    onEditorFocus(editor) {},
    // 开始
    onEditorReady(editor) {},

    // 值发生变化
    onEditorChange(editor) {
      this.content = editor.html;
      let data = {
        title: this.title,
        content: this.content,
        type: this.type,
      };
      this.data = data;
      this.$emit("content", data);
    },
    select(val) {},
    change(e) {
      let file = e.target.files[0];
      const formData = new FormData();
      formData.append("file", file);
      uploadImg(formData)
        .then((res) => {
          let quill = this.$refs.quill.quill;
          if (res.code === 200) {
            // const formdata = _.extend({}, this.formdata)
            let length = quill.getSelection().index; //光标位置
            // 插入图片  图片地址
            quill.insertEmbed(length, "image", res.data);
            // 调整光标到最后
            quill.setSelection(length + 1); //光标后移一位
          }
        })
        .catch((err) => {
          console.error(err);
        });
    },
  },
  computed: {
    editor() {
      return this.$refs.myTextEditor.quillEditor;
    },
    token() {
      return this.$state.getters.token;
    },
  },
  mounted() {
    // console.log('this is my editor',this.editor);
  },
  watch: {
    type(nv, ov) {
      this.data.type = nv;
      this.$emit("content", this.data);
    },
  },
};
</script>
<style>
.editor {
  line-height: normal !important;
  height: 800px;
}
.ql-snow .ql-tooltip[data-mode="link"]::before {
  content: "请输入链接地址:";
}
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
  border-right: 0px;
  content: "保存";
  padding-right: 0px;
}

.ql-snow .ql-tooltip[data-mode="video"]::before {
  content: "请输入视频地址:";
}

.ql-snow .ql-picker.ql-size .ql-picker-label::before,
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
  content: "14px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="small"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="small"]::before {
  content: "10px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="large"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="large"]::before {
  content: "18px";
}
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value="huge"]::before,
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value="huge"]::before {
  content: "32px";
}

.ql-snow .ql-picker.ql-header .ql-picker-label::before,
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
  content: "文本";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
  content: "标题1";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
  content: "标题2";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
  content: "标题3";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
  content: "标题4";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
  content: "标题5";
}
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
  content: "标题6";
}

.ql-snow .ql-picker.ql-font .ql-picker-label::before,
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
  content: "标准字体";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="serif"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="serif"]::before {
  content: "衬线字体";
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="monospace"]::before,
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value="monospace"]::before {
  content: "等宽字体";
}
#quillEditor .ql-container.ql-snow {
  background-color: #ffffff;
}
</style>
